# -*- coding: utf-8 -*-

import re
import gtk

class Controle:
    """ Classe que faz a manipulação dos dados do simulador """
    
    def __init__(self):
        self.n_exec = 0
        self.exec_atual = 0
    
    def ultima_inst(self):
        print self.montador.gerou_codigo
        for i in range(len(self.montador.gerou_codigo)-1, 0, -1):
            if self.montador.gerou_codigo[i] == 1:
                return i*4 + self.arquitetura.pc_ini
    
    def set_interface(self, interface):
        """ Faz a ligação com a iterface do projeto """
        self.interface = interface
    
    
    def set_arquitetura(self, arquitetura):
        """ Faz a ligação com a arquitetura """
        self.arquitetura = arquitetura
    
    
    def set_montador(self, montador):
        """ Faz a ligação com a montador """
        self.montador = montador
    
    
    def add_msg(self, mensagem):
        buffer = self.interface.mensagens.get_buffer()
        codigo = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter())
        buffer.set_text("%s%s\n" % (codigo, mensagem))
    
    
    def start(self):
        """ Inicia a aplicação """
        self.interface.carrega_tabela_mem()
        self.interface.carrega_tabela_rotulo()
        self.interface.bt_executar.set_sensitive(False)
        self.interface.bt_executar_passo.set_sensitive(False)
        self.interface.bt_parar.set_sensitive(False)
        self.interface.show()